package com.tjbank.cssys.web.controller;

import com.tjbank.cssys.api.UserService;
import com.tjbank.cssys.dto.LoginDTO;
import com.tjbank.cssys.dto.UserDTO;
import com.tjbank.cssys.dto.UserDetailsDTO;
import com.tjbank.cssys.framework.base.api.BaseController;
import com.tjbank.cssys.framework.base.api.Response;
import com.tjbank.cssys.mybatis.IamUserDao;

import com.tjbank.cssys.web.config.GetUserCodeFromToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.Date;
import java.util.Map;
import java.util.UUID;

/**
 * @menu: /用户管理
 * @author -- lijiangtao 2020年5月7日 下午2:08:44
 */
@RestController
@SuppressWarnings("unchecked")
public class UserController extends BaseController {

    @Autowired
    private UserService userService;

    @Autowired
    private IamUserDao iamUserDao;

    private static final  Logger logger= LoggerFactory.getLogger(UserController.class);
    /**
     * 新增
     *
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:58:56
     */
    @PostMapping("/user")
    public Response<Integer> addUser(@RequestBody @Valid UserDTO userDTO , HttpServletRequest request) {

        return this.success(userService.addUser(userDTO));
    }

    /**
     * 根据用户ID查询
     *
     * @param userId
     * @return
     * @author -- lijiangtao 2020年6月19日 下午4:07:54
     */
    @GetMapping("/user/{userId}")
    public Response<UserDetailsDTO> queryUserById(@PathVariable String userId   ,HttpServletRequest request) {

        return this.success(userService.queryUserById(userId));
    }

    /**
     * 删除
     *
     * @param
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:58:47
     */
    @DeleteMapping("/user/{userId}")
    public Response<Integer> deleteUser(@PathVariable String userId ,HttpServletRequest request) {

        return this.success(userService.deleteUser(userId));
    }

    /**
     * 更新
     *
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:58:39
     */
    @PutMapping("/user")
    public Response<Integer> updateUser(@RequestBody @Valid UserDTO userDTO ,HttpServletRequest request) {

        return this.success(userService.updateUser(userDTO));
    }

    /**
     * 用户登录成功
     *
     * 查询用户权限
     *
     * @param
     * @return
     * @author -- lijiangtao 2020年7月28日 下午3:52:41
     */
    @GetMapping("/user/permission")
    public Response<?> queryPermission(String tenantCode, String userCode ,HttpServletRequest request) {

        return this.success(userService.queryPermission(tenantCode, userCode));
    }

    /**
     * 修改密码
     *
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年7月20日 下午4:35:36
     */
    @PutMapping("/user/updatePassword")
    public Response<Integer> updatePassword(@RequestBody UserDTO userDTO,HttpServletRequest request) {


        return this.success(userService.updatePassword(userDTO));
    }

    /**
     * 查看输入的用户登录名是否重复
     * @param userCode
     * @return
     */
    @GetMapping("/user/getUserCode")
    public Response<Map<String,String>> getUserCode(@RequestParam Map<String,String>map ,HttpServletRequest request){

        return this.success(iamUserDao.getUserCode(map));
    }
}
